package es.fonso.codigo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;

import org.jsoup.nodes.Element;

import es.fonso.visual.MainWindow;

public class Descarga extends Url {
	
	private String nombre;
	private String urlTorrent;
	private String tamano;
	private String calidad;
	private String fecha;
	private String categoria;
	private String servidores;
	
	private HashMap<Integer,String> urlServidores;

	public Descarga(String url) {
		super(MAIN_URL+url);
		servidores="";
		urlServidores = new HashMap<Integer,String>();
		urlServidores.put(0, ""); 	//MEGA
		urlServidores.put(1, "");	//SOCKSHARE
		urlServidores.put(2, "");	//1FICHIER
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getUrlTorrent() {
		return urlTorrent;
	}

	public void setUrlTorrent(String urlTorrent) {
		this.urlTorrent = urlTorrent;
	}
	
	public String getTamano() {
		return tamano;
	}

	public void setTamano(String tamano) {
		this.tamano = tamano;
	}
	
	public String getFecha(){
		return fecha;
	}
	
	public void setFecha(String fecha){
		this.fecha = fecha;
	}

	public String getCalidad() {
		return calidad;
	}

	public void setCalidad(String calidad) {
		this.calidad = calidad;
	}
	

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}		
	
	public String getServidores() {
		return servidores;
	}

	public void setServidores(String servidores) {
		this.servidores = servidores;
	}

	public String getUrlMega() {
		return urlServidores.get(0);
	}

	public void setUrlMega(String urlMega) {
		urlServidores.put(0,urlMega);
		this.servidores+="M";
	}
		
	public String getUrlSockshare() {
		return urlServidores.get(1);
	}

	public void setUrlSockshare(String urlSockshare) {
		urlServidores.put(1,urlSockshare);
		this.servidores+="S";
	}
	
	public String getUrlOnefichier() {
		return urlServidores.get(2);
	}

	public void setUrlOnefichier(String urlOnefichier) {
		urlServidores.put(2,urlOnefichier);
		this.servidores+="1";
	}
	
	public String getUrlServidor(Integer i){
		return urlServidores.get(i);
	}

	public void descargarTorrent() {
		try {
			MainWindow.log("Descargando torrent: " + nombre);
			URL url = new URL(urlTorrent);
			URLConnection urlCon = url.openConnection();
			urlCon.setRequestProperty(
					"User-Agent",
					USER_AGENT);

			// acceso al contenido web
			InputStream is = urlCon.getInputStream();

			String extension = ".torrent";

			// Fichero en el que queremos guardar el contenido
			
			File dir = new File("torrents\\");
			dir.mkdirs();
			
			FileOutputStream fos = new FileOutputStream(Configuracion.get("torrentDir").concat("\\")
					.concat(nombre)
					.concat(extension));
			
			//FileOutputStream fos = new FileOutputStream("c:/1.torrent");

			// buffer para ir leyendo.
			byte[] array = new byte[10000];

			// Primera lectura y bucle hasta el final
			int leido = is.read(array);
			while (leido > 0) {
				fos.write(array, 0, leido);
				leido = is.read(array);
			}

			// Cierre de conexion y fichero.
			is.close();
			fos.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public void obtenerDatos() {
		try {
			this.obtenerCodigo();
			//Torrent
			Element torrentInfo = doc.getElementsByClass("torrent-info").get(0);
			this.tamano=torrentInfo.child(1).child(5).child(0).html();
			this.categoria= torrentInfo.child(1).child(1).html();
			this.nombre=torrentInfo.child(0).html().replaceAll("&ntilde;", "n");
			String href=doc.getElementsByClass("btn-download-file_").attr("href");
			this.urlTorrent=href.substring(href.indexOf("http://"));
			
			//MEGA
			try {
				String hrefMega= doc.getElementsByAttributeValue("src", "http://www.divxatope.com/images/gestores/mega.png").get(0).parent().parent().getElementsByTag("a").attr("href");
				 setUrlMega(hrefMega.substring(hrefMega.indexOf("https://mega.co.nz")).replace("$", "#"));
			} catch (Exception e) {
				MainWindow.log("Sin enlace de MEGA: "+ this.nombre);
			}
			
			//SOCKSHARE
			try {
				String hrefSock= doc.getElementsByAttributeValue("src", "http://www.divxatope.com/images/gestores/sockshare.png").get(0).parent().parent().getElementsByTag("a").attr("href");
				setUrlSockshare(hrefSock.substring(hrefSock.indexOf("http://www.sockshare.com")));
			} catch (Exception e) {
				MainWindow.log("Sin enlace de SOCKSHARE: "+ this.nombre);
			}
			
			//1FICHIER 
			try {
				String hrefOne= doc.getElementsByAttributeValue("src", "http://www.divxatope.com/images/gestores/1fichier.png").get(0).parent().parent().getElementsByTag("a").attr("href");
				setUrlOnefichier(hrefOne.substring(hrefOne.indexOf("/http://oqaxrrnywe.1fichier.com/")+1));
			} catch (Exception e) {
				MainWindow.log("Sin enlace de 1FICHIER: "+ this.nombre);
			}
			
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
}
